As is known, main elements of a virtual distributed infrastructure, also known as a cloud infrastructure, include components known as “virtual machines” and “hypervisors.” Virtual machines are logical processing elements that may be instantiated on one or more physical processing elements (e.g., servers, computers, processing devices). That is, a virtual machine may be considered a software implementation of a physical machine (i.e., a computer) that is able to execute programs in a manner functionally similar to program execution on a physical machine. Thus, different virtual machines can run different operating systems and multiple applications on the same physical computer.
Virtualization is realized via the use of the hypervisor component, which is directly inserted on top of the computer hardware in order to allocate hardware resources of the physical computer dynamically and transparently. The hypervisor affords the ability for multiple operating systems to run concurrently on a single physical computer and share hardware resources with each other. The hypervisor thus also manages input/output (I/O) scheduling associated with the workloads performed by each virtual machine.
However, it is not uncommon for a distributed virtual infrastructure to be implemented on a physical computing platform that includes tens to hundreds of physical processing elements. Thus, I/O scheduling can be a challenging task. This can also pose a problem when the distributed virtual infrastructure is part of a computing system maintained and managed by an infrastructure provider entity as part of a chargeable service. In such a scenario, the provider entity typically has tenants (users of the infrastructure) who expect compliance with service level agreements (SLAs) that are agreed upon between the provider entity and the tenants in order to guarantee specific performance and security criteria. That is, the tenants as well as the infrastructure provider entity desire to confirm that there is compliance with the SLA.